Managing Incrementally Applied System Updates

ABSTRACT

According to one embodiment of the present invention, a computer system updates a system including a plurality of sever instances, and includes at least one processor. The computer system determines a level of configuration for each operating server instance. One or more sets of operational features are added to the system based on a comparison between the determined levels of configuration of the operating server instances and minimum levels of configuration associated with the one or more sets of operational features. Server operations are performed and one or more corresponding sets of operational features are applied to the server operations in response to the addition of those corresponding sets of operational features to the system. Embodiments of the present invention further include a method and computer program product for updating a system including a plurality of server instances in substantially the same manner described above.

BACKGROUND

1. Technical Field

Present invention embodiments relate to system updates, and morespecifically, to enabling system updates to be performed in anincremental fashion, thereby reducing or eliminating the time intervalsin which the system becomes unavailable due to installation of theupdates.

2. Discussion of the Related Art

Customers utilizing large, mission-critical, globally-distributedenterprise content management systems have difficulty in identifyingsufficient maintenance windows (or time intervals) for disabling thesystems in order to perform even small system upgrade operations. Thisis due to various factors, including the critical nature of thesesystems, the large number of dependent users (which translates into ahigh cost for even small system downtime windows), and the constantactivity resulting from users distributed across multiple geographies.Accordingly, implementation of system upgrades tends to be delayed forextended time periods.

BRIEF SUMMARY

According to one embodiment of the present invention, a computer systemupdates a system including a plurality of sever instances, and includesat least one processor. The computer system determines a level ofconfiguration for each operating server instance. One or more sets ofoperational features are added to the system based on a comparisonbetween the determined levels of configuration of the operating serverinstances and minimum levels of configuration associated with the one ormore sets of operational features. Server operations are performed andone or more corresponding sets of operational features are applied tothe server operations in response to the addition of those correspondingsets of operational features to the system. Embodiments of the presentinvention further include a method and computer program product forupdating a system including a plurality of server instances insubstantially the same manner described above.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a diagrammatic illustration of an example environment orsystem of an embodiment of the present invention.

FIG. 2 is a procedural flow chart illustrating a manner in which arequested package is installed according to an embodiment of the presentinvention.

FIG. 3 is a diagrammatic illustration of an example scenario of denyinginstallation of a requested package according to an embodiment of thepresent invention.

FIG. 4 is a diagrammatic illustration of an example scenario of allowinginstallation of a requested package according to an embodiment of thepresent invention.

FIG. 5 is a procedural flow chart illustrating a manner in which aserver instance is verified for use with installed packages according toan embodiment of the present invention.

FIG. 6 is a diagrammatic illustration of an example scenario ofterminating initiation of a server instance that is incompatible withinstalled packages according to an embodiment of the present invention.

DETAILED DESCRIPTION

Present invention embodiments provide a manner of updating (includingupgrading) a system incrementally. In other words, a portion of thesystem may be disabled in order to be updated, while remaining systemportions continue operating.

In order to provide incremental system updates, different serverinstances (e.g., instances of physical or virtual servers) are enabledto operate with different code revision levels. An impediment toallowing plural server instances to operate at different code revisionlevels is the inherent functional code processing that occurs based onadditional features or capabilities of a given code revision. Newer coderevisions may be aware of previous metadata elements and functionality,but older code revisions have no knowledge of new data elements and/orfunctionality that is inherent in newer code versions. Since the serverinstances are all operating based on the same persisted data sets andmust be able to service requests for any object within the system,present invention embodiments provide a manner to ensure that newerserver instances do not introduce new data elements or change theprocessing behavior for existing data elements in a way that causesintegrity issues for either the old or new server instances.

Present invention embodiments define and provide strict enforcement of apackaging mechanism by which all new data elements and any newfunctional behaviors are strictly controlled in a manner that guaranteesconsistent and appropriate processing by both old and new serverinstances. A package (which may be referred to herein for explanatorypurposes as an “add-in” component) defines a logically related set ofmetadata elements and other components to be added to (or to update apreviously existing component of) the system and managed in a consistentfashion.

Present invention embodiments formalize the componentized package oradd-in structure to provide the functional mechanism to control (orgate) server-side functional behaviors. In other words, the presence orabsence of these add-in components control the logical program codepaths that are executed within the server. New program code paths areexclusively designed and implemented based on the presence of the add-incomponent and all previous behaviors are maintained in the absence ofthe add-in component. This functional compliance based on the presenceor absence of an add-in component is enforced at the data server tierand the user interface tier. All the persistence and functionalactivities for a given request into the system is controlled at the datatier, while all user-interfacing experience related to a given featureset is controlled at the user interface tier based on whether thatfeature had been enabled (“turned on”). The enablement is implicit inthe deployment of the related add-in component.

The packages or add-in components pre-require a given code revisionlevel prior to deployment. Any deployment of a given package or add-incomponent is strictly enforced such that an add-in component is neverallowed to be deployed until all relevant server instances have beenupdated to the specified code revision level. Both server and clientside behavior is controlled or otherwise gated by present inventionembodiments based on the presence or absence of a given add-incomponent. The approach of present invention embodiments enables muchmore coarse-grained determinations about the state of all data elementsrelated to a particular add-in component and the corresponding features.

Present invention embodiments employ various elements including apackage or add-in component and an associated code revision level, aserver instance code revision level and corresponding registration, apersistent repository and corresponding record of server instances andapplied add-in components, and server side code behaviors based oncurrently applied add-in components. The package or add-in componentrepresents data definitions and other required elements sufficient tosupport a given feature or feature set. An attribute of each add-incomponent is a minimum server code revision level sufficient to supportthat add-in component. The application of a given add-in component isstrictly controlled based on the corresponding server code revisionlevels. Present invention embodiments provide the guarantees aroundthese server code revision levels, preferably in a stateless farmedserver configuration. In order to provide these guarantees, each serverinstance (e.g., physical or virtual server instances) manages andcommunicates the code revision level to enable the system to determine apoint in time when all operating server instances are at an appropriatecode revision level to support the application of a given add-incomponent.

An example environment or system of a present invention embodiment isillustrated in FIG. 1. Specifically, the system includes a server groupor farm 100, and one or more client or end-user systems 14. The serverfarm includes one or more server systems 10, each including one or moreserver instances (e.g., physical and/or virtual server instances)operating on the physical hardware of that server system. For example, aserver system 10 may be hosting a single server instance, or a pluralityof sever instances (e.g., each server instance represented by a virtualserver). Server systems 10 and client systems 14 may be remote from eachother and communicate over a network 12. The network may be implementedby any number of any suitable communications media (e.g., wide areanetwork (WAN), local area network (LAN), Internet, Intranet, etc.).Alternatively, server systems 10 and client systems 14 may be on thesame physical or virtual server, or be local to each other andcommunicate via any appropriate local communication medium (e.g., LAN,hardwire, wireless link, Intranet, etc.).

Client systems 14 enable users to interact with server farm or group 100to perform desired operations (e.g., submit update requests, etc.). Theserver systems include a registration module 20, an install module 22,and a verify module 24 to control and manage incremental system updatesor upgrades as described below. The server and client systems mayfurther include one or more applications 26 to perform variousprocessing operations. A database system 18 may store variousinformation for the control and management (e.g., server registrationinformation, code revision levels of server systems 10, add-incomponents and code revision levels, etc.). The database system may beimplemented by any conventional or other database or storage unit, maybe local to, remote from, or on the same physical or virtual servers as,server systems 10 and client systems 14, and may communicate via anyappropriate communication medium (e.g., local area network (LAN), widearea network (WAN), Internet, hardwire, wireless link, Intranet, etc.).

The client systems may present a graphical user (e.g., GUI, etc.) orother interface (e.g., command line prompts, menu screens, etc.) tosolicit information from users pertaining to the desired operations, andmay provide reports or displays including various information.

Server systems 10 and client systems 14 may be implemented by anyconventional or other computer systems preferably equipped with adisplay or monitor, a base (e.g., including at least one processor 15,one or more memories 35 and/or internal or external network interfacesor communications devices 25 (e.g., modem, network cards, etc.)),optional input devices (e.g., a keyboard, mouse or other input device),and any commercially available and custom software (e.g.,server/communications software, registration module, install module,verify module, browser/interface software, applications, etc.).

Registration module 20, install module 22, and verify module 24 mayinclude one or more modules or units to perform the various functions ofpresent invention embodiments described below. The various modules(e.g., registration module, install module, verify module, etc.) may beimplemented by any combination of any quantity of software and/orhardware modules or units, and may reside within memory 35 of the serversystems for execution by processor 15.

A manner in which a requested package or add-in component is installedin a server farm or group according to an embodiment of the presentinvention (e.g., via registration module 20, install module 22, andcorresponding server systems 10) is illustrated in FIG. 2. Initially,each server instance of a server system 10 (e.g., physical and/orvirtual server instances) registers or otherwise communicates acorresponding code revision level at step 200 (e.g., via registrationmodule 20 and corresponding server system 10). The code revision leveland other information pertaining to each server instance is stored indatabase system 18. This provides a central storage location to enableeach operating server system within a given deployment to ascertain therevision level of each server instance, thereby facilitatingdetermination of when a deployment attains a code revision levelsufficient to support the application of a desired add-in component. Ifa deployment does not attain a sufficient code revision level, theapplication of the add-in component is prevented regardless of whichserver system receives the request to apply that component as describedbelow.

Each server instance preferably registers with a content repository (ordatabase system 18) at start-up, and provides information including astatus and a specification of the current code revision level associatedwith that server instance. The content repository maintains a set ofsubsystem configuration data to record and control the state of thesystem (or server group) at any given time in order to provide theguarantees pertaining to packages or add-in components and code revisionlevels. A locking mechanism (e.g., a claim lock) is employed that can beset to limit activities occurring across the server group or farm asdescribed below. This is preferably implemented as a flag within thesubsystem configuration data (e.g., indicating the open/closed status ofthe lock), and controls the state of the system and the application ofany add-in components. The subsystem configuration data further includesinformation for each server instance, and for each package or add-incomponent applied to the system.

Once registration is performed, a request to apply (e.g., add orotherwise update the server group with) a package or add-in component isreceived at a server system 10 at step 205 for processing (e.g., viainstall module 22 and the receiving server system 10). The lockmechanism is acquired at step 210. If initial attempts fail to acquirethe lock mechanism, the acquisition is retried for a specified number oftimes. Basically, the corresponding flag within the subsystemconfiguration data is examined to determine the state of the lock. Whenthe lock is in an open state, the flag is set by the server systemacquiring the lock to indicate acquisition of the lock and preventactivities from occurring within the system (or server group) asdescribed below. When the lock mechanism is not acquired (e.g., the lockremains acquired by another server system and does not enter an openstate) as determined at step 215, the request for the add-in componentis denied or rejected at step 240.

The lock mechanism basically eliminates possible race conditions, and isacquired whenever a server instance attempts to update a persistedstate. This enables the system to block new server instances fromstarting up or joining the server farm or group once a determination hasbeen made with respect to the overall minimum code revision level of thesystem and the application of an associated add-in component.

When the lock mechanism is acquired as determined at step 215, thecurrent code revision levels for each operating server instance areretrieved from database system 18 and examined at step 220. If thecurrent code revision levels for each operating server instance aresufficient for the requested package or add-in component as determinedat step 225 (e.g., the code revision level of each server instance isgreater than or equal to the code revision level of the requested add-incomponent), the add-in component is installed on the system at step 235.Further, the add-in component is registered with the content repository(e.g., database system 18) in order to verify that new server instancesstarting up contain sufficient code revision levels to support theapplied add-in component as described below. Accordingly, acorresponding record within the subsystem configuration data is createdthat specifies the minimum code revision level required for the newlyinstalled package or add-in component.

If the current code revision levels for one or more operating serverinstances are insufficient for the requested package or add-in componentas determined at step 225 (e.g., the code revision levels of one or moreserver instances are less than the code revision level of the requestedadd-in component), the request for the add-in component is rejected atstep 230. Once the request has been processed and appropriate actiontaken (e.g., rejected at step 230 or the add-in component installed atstep 235), the lock mechanism is released at step 245. This isaccomplished by setting the corresponding flag in the subsystemconfiguration data to indicate that the lock is in an open state,thereby enabling acquisition by a subsequent server system.

An example scenario rejecting a request for application of a package oradd-in component is illustrated in FIG. 3. Initially, server systems 10a and 10 b each include a corresponding server instance with theirstatus stored in database system 18. By way of example, the serverinstance of system 10 a has a code revision level of 4 and a status ofrunning, while the server instance of server system 10 b has a coderevision level of 5 and a status of running. Sever system 10 b receivesa request 300 for a package or add-in component. The request includesthe name and minimum code revision level for the add-in component. Inthis example scenario, the add-in component includes a name of Feature1and a minimum code revision level of 5. Server system 10 b acquires thelock mechanism, and proceeds to retrieve and examine the code revisionlevels of the operating server instances stored in database system 18.Since the server instance of server system 10 a includes a code revisionlevel (e.g., 4) less than the minimum code revision level (e.g., 5) ofthe add-in component, the request is rejected or denied and the lockmechanism is released.

An example scenario allowing installation of a package or add-incomponent is illustrated in FIG. 4. Initially, server systems 10 a and10 b each include a corresponding server instance with their statusstored in database system 18. By way of example, the server instance ofsystem 10 a has a code revision level of 5 and a status of running,while the server instance of server system 10 b has a code revisionlevel of 5 and a status of running. Sever system 10 b receives a request400 for a package or add-in component. The request includes the name andminimum code revision level for the add-in component. In this examplescenario, the add-in component includes a name of Feature1 and a minimumcode revision level of 5. Server system 10 b acquires the lockmechanism, and proceeds to retrieve and examine the code revision levelsof the operating server instances stored in database system 18. Sincethe server instances of server systems 10 a and 10 b each include a coderevision level (e.g., 5) greater than or equal to the minimum coderevision level (e.g., 5) of the add-in component, the add-in componentis installed in the system and the lock mechanism is released. Inaddition, the installed add-in component is registered, where thecorresponding name and minimum code revision level for that componentare stored in database system 18.

The installation of packages or add-in components is controlled toenable these components to be installed in response to all operatingserver instances of a system satisfying the minimum code revision levelrequirements specified for the add-in component. This enables a seriesof add-in components for a system update or upgrade to be incrementallyapplied (e.g., on a component by component basis) to a system whileensuring compatibility of the operating server instances with the add-incomponents.

However, the add-in components may be applied during a time intervalwhen one or more server instances of the system are unavailable. Forexample, a server instance may be disabled for routine maintenance orupdates (e.g., to install a new code revision), while remaining serverinstances are operational to avoid disabling the entire system. In thiscase, the server instance may become incompatible with new add-incomponents installed during the time period the server instance wasunavailable. Accordingly, present invention embodiments verify newlyavailable server instances for compatibility with installed add-incomponents prior to enabling completion of start-up and joining a severgroup or farm. This enables one or more server instances to be renderedunavailable (e.g., for maintenance, updates, etc.) while maintainingoperation of the system via remaining available server instances.

A manner in which a server instance is verified for use with installedpackages or add-in components (e.g., via verify module 24 and acorresponding server system 10) according to an embodiment of thepresent invention is illustrated in FIG. 5. Initially, a server instanceis initiated and a start-up sequence for the server instance iscommenced at step 500. The lock mechanism is acquired at step 505 insubstantially the same manner described above. If initial attempts failto acquire the lock mechanism, an appropriate error condition is logged.The lock mechanism enables the system to block new server instances fromstarting up or joining the server farm or group once a determination hasbeen made with respect to the overall minimum code revision level of thesystem and the add-in components.

Once the lock mechanism is acquired, the current code revision levelsfor each installed add-in component are retrieved from database system18 and examined at step 510. If the initiated server instance has aninsufficient code revision level for one or more of the installed add-incomponents as determined at step 515 (e.g., the initiated serverinstance has a minimum code revision level less than the minimum coderevision level for one or more of the installed add-in components), thelock mechanism is released at step 530 in substantially the same mannerdescribed above. In addition, the start-up sequence is terminated and awarning for the system is logged and/or displayed at step 535 indicatingthat all new server instances must be at the minimum code revision levelin order to start-up and terminate the start-up process.

When the initiated server instance has a code revision level thatsatisfies the minimum code revision level for each of the installedadd-in components as determined at step 515 (e.g., the initiated serverinstance has a code revision level that is greater than or equal to theminimum code revision level for each of the installed add-incomponents), the start-up sequence proceeds to completion and thecurrent status and code revision level of the server instance is updatedin the subsystem configuration data within database system 18 at step520. The lock mechanism is subsequently released at step 525 insubstantially the same manner described above.

An example scenario terminating initiation of a server instance that isincompatible with installed packages or add-in components according toan embodiment of the present invention is illustrated in FIG. 6.Initially, server systems 10 a and 10 b each include a correspondingserver instance with their status stored in database system 18. Further,the information for an installed package or add-in component is storedin database system 18. By way of example, the server instance of system10 a has a code revision level of 5 and a status of running, the serverinstance of server system 10 b has a code revision level of 4 and astatus of stopped, and an installed package or add-in component has aname of Feature1 and a minimum code revision level of 5. Sever system 10b includes a server instance that has been initiated and is performing astart-up sequence. Server system 10 b acquires the lock mechanism, andproceeds to retrieve and examine the code revision levels of theinstalled add-in components stored in database system 18. Since theserver instance of server system 10 b includes a code revision level(e.g., 4) less than the minimum code revision level (e.g., 5) of theinstalled add-in component, the start-up sequence of the initiatedserver instance of server system 10 b is terminated and the lockmechanism is released.

By way of further example, if the code revision level for the initiatedserver instance of server system 10 b is 5 in the above scenario, theinitiated server instance satisfies the minimum code revision level forthe installed components. Accordingly, the initiated server instance ispermitted to complete the start-up sequence and join the server group orfarm. In this case, the information of the server instance (e.g., statusand code revision level) is updated in database system 18.

Present invention embodiments ensure all operating server instances arecontrolled in a manner to guarantee that server instance code revisionlevels meet the minimum requirements of a given package or add-incomponent. Thus, any applied add-in component has a set of operatingserver instances with the suitable code elements to support thecorresponding feature. This guarantees that the system-wide behaviorsare sufficient for a given set of features and capabilities, whileenabling the incremental update of server instances.

Present invention embodiments may further control server side programcode behaviors depending upon the packages or add-in components thathave been applied. The program code is operative with or without a givenpackage or add-in component installed. If an add-in component ispresent, a given program code path is enabled and executed (ifapplicable) for a given server operation. If the add-in component is notpresent, the conditional logic and corresponding program code path isignored for a given server operation. Generally, packages or add-incomponents tend to be additive in nature and represent newfunctionality. This is typically represented as new program code pathswithin server and/or client applications that are conditionally executedbased on the presence of that add-in component.

A given package or add-in component may represent changed behavior tosome existing program code path(s). In this case, the old program codepaths are maintained for cases where the add-in component is notapplied, while the new behavior is represented in a new program codepath that conditionally executes when the add-in component is applied.This conditional logic behavior similarly applies to metadatapersistence activity. The application of a new feature may requirecertain metadata schema changes to occur. This process (e.g.,synchronous or asynchronous) is initiated at the time the package oradd-in component is applied to the system. This initiation may becontrolled via the lock mechanism within the subsystem configurationdata as described above.

The program code logic may reside within applications 26 of serversystems 10 and/or client systems 14. This logic may be implemented byany suitable program code statements including a conditional clause(e.g., IF, DO/FOR loops, branching, etc.). By way of example, theconditional logic may be employed with the following statements.

OP1 IF (ADD-IN1)    OP2    OP3    OP4 ENDIF OP5where OP1-OP5 indicate general operations. In this example, the typicalprogram code flow without the installation of add-in component ADD-IN1is to perform OP1 and OP5. If the add-in component, ADD-IN1, isinstalled, operations OP2-OP4 are performed. Thus, the logic may be usedin server instances regardless of the installation status of add-incomponent ADD-IN 1. In other words, the system may operate whether ornot the add-in components are installed. In this case, applicationsoperate in a typical manner (without utilizing features of the installedadd-in components) when the add-in components are not yet installed, andare enabled to utilize the installed add-in components when thesecomponents are installed and become available.

The logic statements are performed based on a recorded flag indicatingthe presence or absence of an add-in component. The flag may be includedwithin the subsystem configuration data. When a package or add-incomponent is installed and registered with database system 18, the flagis set to indicate the presence of the add-in component. Accordingly,during execution of the logic statements, the flag is retrieved fromdatabase system 18 in order to determine the presence or absence of apackage or add-in component specified in the logic statement, andtraverse the appropriate program code execution path.

It will be appreciated that the embodiments described above andillustrated in the drawings represent only a few of the many ways ofimplementing embodiments for managing incrementally applied systemupdates.

The environment or system of the present invention embodiments mayinclude any number of computer or other processing systems (e.g., clientor end-user systems, server systems, etc.) and databases or otherrepositories arranged in any desired fashion, where the presentinvention embodiments may be applied to any desired type of computingenvironment (e.g., cloud computing, client-server, network computing,mainframe, stand-alone systems, etc.). The computer or other processingsystems employed by the present invention embodiments may be implementedby any number of any personal or other type of computer or processingsystem (e.g., IBM-compatible, laptop, PDA, mobile devices, etc.), andmay include any commercially available operating system and anycombination of commercially available and custom software (e.g., browsersoftware, communications software, server software, registration module,install module, verify module, etc.). These systems may include anytypes of monitors and input devices (e.g., keyboard, mouse, voicerecognition, etc.) to enter and/or view information. In addition, thecomputer systems may host any quantity of any physical or virtual serveror other machine instances.

It is to be understood that the software (e.g., registration module,install module, verify module, etc.) of the present inventionembodiments may be implemented in any desired computer language andcould be developed by one of ordinary skill in the computer arts basedon the functional descriptions contained in the specification and flowcharts illustrated in the drawings. Further, any references herein ofsoftware performing various functions generally refer to computersystems or processors performing those functions under software control.The computer systems of the present invention embodiments mayalternatively be implemented by any type of hardware and/or otherprocessing circuitry.

The various functions of the computer or other processing systems may bedistributed in any manner among any number of software and/or hardwaremodules or units, processing or computer systems and/or circuitry, wherethe computer or processing systems may be disposed locally or remotelyof each other and communicate via any suitable communications medium(e.g., LAN, WAN, Intranet, Internet, hardwire, modem connection,wireless, etc.). For example, the functions of the present inventionembodiments may be distributed in any manner among the variousend-user/client and server systems, and/or any other intermediaryprocessing devices. The software and/or algorithms described above andillustrated in the flow charts may be modified in any manner thataccomplishes the functions described herein. In addition, the functionsin the flow charts or description may be performed in any order thataccomplishes a desired operation.

The software of the present invention embodiments (e.g., registrationmodule, install module, verify module, etc.) may be available on arecordable or computer useable medium (e.g., magnetic or opticalmediums, magneto-optic mediums, floppy diskettes, CD-ROM, DVD, memorydevices, etc.) for use on stand-alone systems or systems connected by anetwork or other communications medium.

The communication network may be implemented by any number of any typeof communications network (e.g., LAN, WAN, Internet, Intranet, VPN,etc.). The computer or other processing systems of the present inventionembodiments may include any conventional or other communications devicesto communicate over the network via any conventional or other protocols.The computer or other processing systems may utilize any type ofconnection (e.g., wired, wireless, etc.) for access to the network.Local communication media may be implemented by any suitablecommunication media (e.g., local area network (LAN), hardwire, wirelesslink, Intranet, etc.).

The system may employ any number of any conventional or other databases,data stores or storage structures (e.g., files, databases, datastructures, data or other repositories, etc.) to store information(e.g., code revision levels, packages or add-in component information,code execution flags, locking mechanism flags, etc.) for any quantity ofserver or other instances (e.g., instances of other types of physical orvirtual machines, etc.). The database system may be implemented by anynumber of any conventional or other databases, data stores or storagestructures (e.g., files, databases, data structures, data or otherrepositories, etc.) to store information (e.g., code revision levels,packages or add-in component information, code execution flags, lockingmechanism flags, etc.). The database system may be included within orcoupled to the server and/or client systems. The database systems and/orstorage structures may be remote from or local to the computer or otherprocessing systems, and may store any desired data (e.g., code revisionlevels, packages or add-in component information, code execution flags,locking mechanism flags, etc.).

The packages or add-in components may include any quantity of anydesired updates or upgrades for the system (e.g., features, data sets orstructures, processes, etc.), where any quantity of packages or add-incomponents may be applied based on the verification. For example, two ormore packages may be applied in response to the code revision levels ofthe server instances satisfying the most recent (e.g., greatest, etc.)code revision level of the packages to be applied. Further, the packagesor add-in components may include any portion or an entirety of anoverall update for the system.

The code revision levels may be represented by any quantity of any typesof characters, numerals or symbols (e.g., numeric, alphanumeric,symbols, etc.) having any desired values. Any values may be utilized toindicate recent or older code revisions (e.g., higher values indicatemore recent code revisions, lower values indicate more recent coderevisions, length of the value may indicate recent code revisions,etc.). The code revision levels may be compared in any desired fashionto determine compatibility between packages and server instances (e.g.,greater than, less than, equal to, etc.). Alternatively, any desiredcharacteristics between the packages and server instances may becompared to determine compatibility (e.g., release dates, titles,indicators within the code, etc.).

The lock mechanism and package presence flags may be represented by anyquantity of flags or other indicators. The flags may be represented byany quantity of any types of characters, numerals or symbols (e.g.,numeric, alphanumeric, symbols, etc.) having any desired values. Anyvalues may be utilized to indicate the open/closed state of the lock orpresence/absence of a package (e.g., a one may represent a closed oracquired state or presence of a package, while a zero may indicate anopen or available state or absence of a package, etc.). The variouserror conditions may be logged or indicated/displayed to the system oruser. The notification may include any desired information pertaining tothe error condition (e.g., lock not being acquired, incompatible coderevision levels, etc.).

Any suitable conditional expression may be utilized to control theprogram code path based on the presence or absence of a package. Theseconditional statements may appear within any desired program code on theserver, client or other devices coupled to the system.

The present invention embodiments may employ any number of any type ofuser interface (e.g., Graphical User Interface (GUI), command-line,prompt, etc.) for obtaining or providing information (e.g., packages oradd-in components, code revision levels, error notifications, etc.),where the interface may include any information arranged in any fashion.The interface may include any number of any types of input or actuationmechanisms (e.g., buttons, icons, fields, boxes, links, etc.) disposedat any locations to enter/display information and initiate desiredactions via any suitable input devices (e.g., mouse, keyboard, etc.).The interface screens may include any suitable actuators (e.g., links,tabs, etc.) to navigate between the screens in any fashion.

The report may include any information arranged in any fashion, and maybe configurable based on rules or other criteria to provide desiredinformation to a user (e.g., packages or add-in components, coderevision levels, error notifications, etc.).

The present invention embodiments are not limited to the specific tasksor algorithms described above, but may be utilized for enablingincremental system updates based on compatibility between the systemupdates and any desired configuration elements or characteristics ofobject instances (e.g., instances of machines, physical or virtualinstances, programs/applications, BIOS or OS updates, etc.).Alternatively, present invention embodiments may accommodate operationof applications regardless of compatibility with installed updates.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular foams “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”,“comprising”, “includes”, “including”, “has”, “have”, “having”, “with”and the like, when used in this specification, specify the presence ofstated features, integers, steps, operations, elements, and/orcomponents, but do not preclude the presence or addition of one or moreother features, integers, steps, operations, elements, components,and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the fond disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

What is claimed is:
 1. A computer-implemented method of updating asystem including a plurality of sever instances comprising: determininga level of configuration for each operating server instance; adding oneor more sets of operational features to the system based on a comparisonbetween the determined levels of configuration of the operating serverinstances and minimum levels of configuration associated with the one ormore sets of operational features; and performing server operations ofthe operating server instances and applying one or more correspondingsets of operational features to the server operations in response to theaddition of those corresponding sets of operational features to thesystem.
 2. The computer-implemented method of claim 1, wherein each setof operational features includes a portion of a system update toincrementally update the system.
 3. The computer-implemented method ofclaim 1, wherein the one or more sets of operational features pertain toa system update, and determining the configuration level furtherincludes: maintaining one or more server instances operational to enableincremental application of the system update across the plurality ofserver instances without disabling the entire system.
 4. Thecomputer-implemented method of claim 1, further comprising: registeringeach server instance and added set of operational features with thesystem to provide information pertaining to associated configurationlevels.
 5. The computer-implemented method of claim 1, furthercomprising: initiating a server instance within the system to perform aninitial sequence of operations; determining the minimum configurationlevel for each of the added sets of operational features; comparing alevel of configuration of the initiated server instance with thedetermined minimum levels of configuration associated with each of theadded sets of operational features; and terminating the initial sequenceof operations in response to the level of configuration of the initiatedserver instance being insufficient for one or more sets of addedoperational features.
 6. The computer-implemented method of claim 1,wherein adding one or more sets of operational features to the systemincludes: adding one or more sets of operational features to the systemin response to the determined levels of configuration of the operatingserver instances being sufficient for each of the one or more sets ofoperational features.
 7. The computer-implemented method of claim 1,further comprising: acquiring a lock mechanism to prevent initiation ofadditional server instances within the system.
 8. Thecomputer-implemented method of claim 1, wherein the server operationsinclude conditional logic to control performance of server operationsbased on the presence of a specified set of operational features withinthe system, and performing server operations includes: determining thepresence of the specified set of operational features within the system;bypassing server operations utilizing the specified set of operationalfeatures based on the conditional logic and in response to the absenceof the specified set of operational features within the system; andperforming server operations utilizing the specified set of operationalfeatures based on the conditional logic and in response to the presenceof the specified set of operational features within the system.
 9. Acomputer system for updating a system including a plurality of severinstances comprising: at least one processor configured to: determine alevel of configuration for each operating server instance; add one ormore sets of operational features to the system based on a comparisonbetween the determined levels of configuration of the operating serverinstances and minimum levels of configuration associated with the one ormore sets of operational features; and perform server operations andapply one or more corresponding sets of operational features to theserver operations in response to the addition of those correspondingsets of operational features to the system.
 10. The computer system ofclaim 9, wherein each set of operational features includes a portion ofa system update to incrementally update the system.
 11. The computersystem of claim 9, wherein the one or more sets of operational featurespertain to a system update, and one or more server instances aremaintained to be operational to enable incremental application of thesystem update across the plurality of server instances without disablingthe entire system.
 12. The computer system of claim 9, wherein the atleast one processor is further configured to: register each serverinstance and added set of operational features with the system toprovide information pertaining to associated configuration levels. 13.The computer system of claim 9, wherein the at least one processor isfurther configured to: initiate a server instance within the system toperform an initial sequence of operations; determine the minimumconfiguration level for each of the added sets of operational features;compare a level of configuration of the initiated server instance withthe determined minimum levels of configuration associated with each ofthe added sets of operational features; and terminate the initialsequence of operations in response to the level of configuration of theinitiated server instance being insufficient for one or more sets ofadded operational features.
 14. The computer system of claim 9, whereinadding one or more sets of operational features to the system includes:adding one or more sets of operational features to the system inresponse to the determined levels of configuration of the operatingserver instances being sufficient for each of the one or more sets ofoperational features.
 15. The computer system of claim 9, wherein the atleast one processor is further configured to: acquire a lock mechanismto prevent initiation of additional server instances within the system.16. The computer system of claim 9, wherein the server operationsinclude conditional logic to control performance of server operationsbased on the presence of a specified set of operational features withinthe system, and performing server operations includes: determining thepresence of the specified set of operational features within the system;bypassing server operations utilizing the specified set of operationalfeatures based on the conditional logic and in response to the absenceof the specified set of operational features within the system; andperforming server operations utilizing the specified set of operationalfeatures based on the conditional logic and in response to the presenceof the specified set of operational features within the system.
 17. Acomputer program product for updating a system including a plurality ofsever instances comprising: a computer readable storage medium havingcomputer readable program code embodied therewith, the computer readableprogram code comprising computer readable program code configured to:determine a level of configuration for each operating server instance;add one or more sets of operational features to the system based on acomparison between the determined levels of configuration of theoperating server instances and minimum levels of configurationassociated with the one or more sets of operational features; andperform server operations and apply one or more corresponding sets ofoperational features to the server operations in response to theaddition of those corresponding sets of operational features to thesystem.
 18. The computer program product of claim 17, wherein each setof operational features includes a portion of a system update toincrementally update the system.
 19. The computer program product ofclaim 17, wherein the one or more sets of operational features pertainto a system update, and one or more server instances are maintained tobe operational to enable incremental application of the system updateacross the plurality of server instances without disabling the entiresystem.
 20. The computer program product of claim 17, wherein thecomputer readable program code further comprises computer readableprogram code configured to: register each server instance and added setof operational features with the system to provide informationpertaining to associated configuration levels.
 21. The computer programproduct of claim 17, wherein the computer readable program code furthercomprises computer readable program code configured to: initiate aserver instance within the system to perform an initial sequence ofoperations; determine the minimum configuration level for each of theadded sets of operational features; compare a level of configuration ofthe initiated server instance with the determined minimum levels ofconfiguration associated with each of the added sets of operationalfeatures; and terminate the initial sequence of operations in responseto the level of configuration of the initiated server being insufficientfor one or more sets of added operational features.
 22. The computerprogram product of claim 17, wherein adding one or more sets ofoperational features to the system includes: adding one or more sets ofoperational features to the system in response to the determined levelsof configuration of the operating server instances being sufficient foreach of the one or more sets of operational features.
 23. The computerprogram product of claim 17, wherein the computer readable program codefurther comprises computer readable program code configured to: acquirea lock mechanism to prevent initiation of additional server instanceswithin the system.
 24. The computer program product of claim 17, whereinthe computer readable program code configured to perform serveroperations includes conditional logic to control performance of serveroperations based on the presence of a specified set of operationalfeatures within the system, and the computer readable program codeconfigured to perform server operations includes computer readableprogram code configured to: determine the presence of the specified setof operational features within the system; bypass server operationsutilizing the specified set of operational features based on theconditional logic and in response to the absence of the specified set ofoperational features within the system; and perform server operationsutilizing the specified set of operational features based on theconditional logic and in response to the presence of the specified setof operational features within the system.